package spring_01_ioc.iocTest;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import spring_01_ioc.ioc.HelloIoc;

public class HelloStaticFactoryTest {
	/**
     * Spring 容器利用静态工厂方法创建对象
     */
	@Test
	public void createObjectStaticFactory(){
		ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
		HelloIoc staticFactory = (HelloIoc) context.getBean("HelloStaticFactory");
		staticFactory.sayHello();
		
		//打印结果：Hello me|Hello me|Hello IOC
		//为什么会有俩个Hello me？
		//第一个：context会把applicationContext.xml里的所有bean创建出来。
		//第二个：context.getBean("HelloStaticFactory") 用到了工程方法里的return new HelloIoc();又创建了一次。
		
		//注意：spring容器只负责调用静态工厂方法，而这个静态工厂方法内部实现由程序员完成
	}
}
